package cn.cyh.queue_service.service;

import cn.cyh.queue_service.model.dto.PageRequest;
import cn.cyh.queue_service.model.dto.PageResult;
import cn.cyh.queue_service.model.dto.ServiceTypeRequest;
import cn.cyh.queue_service.model.entity.ServiceType;
import cn.cyh.queue_service.model.vo.ServiceTypeVO;

import java.util.List;

/**
 * 业务类型服务接口
 */
public interface ServiceTypeService {
    
    /**
     * 创建业务类型
     * 
     * @param request 业务类型请求
     * @return 业务类型ID
     */
    Long createServiceType(ServiceTypeRequest request);
    
    /**
     * 更新业务类型
     * 
     * @param id 业务类型ID
     * @param request 业务类型请求
     * @return 是否更新成功
     */
    boolean updateServiceType(Long id, ServiceTypeRequest request);
    
    /**
     * 删除业务类型
     * 
     * @param id 业务类型ID
     * @return 是否删除成功
     */
    boolean deleteServiceType(Long id);
    
    /**
     * 根据ID获取业务类型
     * 
     * @param id 业务类型ID
     * @return 业务类型视图对象
     */
    ServiceTypeVO getServiceTypeById(Long id);
    
    /**
     * 分页查询业务类型列表
     * 
     * @param pageRequest 分页请求
     * @return 分页结果
     */
    PageResult<ServiceTypeVO> getServiceTypeList(PageRequest pageRequest);
    
    /**
     * 获取所有启用状态的业务类型
     * 
     * @return 业务类型视图对象列表
     */
    List<ServiceTypeVO> getActiveServiceTypes();
    
    /**
     * 更新业务类型状态
     * 
     * @param id 业务类型ID
     * @param status 状态(0-禁用, 1-启用)
     * @return 是否更新成功
     */
    boolean updateStatus(Long id, Integer status);
    
    /**
     * 根据前缀查询业务类型
     * 
     * @param prefix 前缀
     * @return 业务类型实体
     */
    ServiceType getByPrefix(String prefix);
} 